home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / modula.zoo / _defn_m2loader.def < prev    next >
Text File  |  1988-04-26  |  4KB  |  109 lines

  1. DEFINITION MODULE M2Loader;       (* C. Vetterli, 22-Dec-85 / 22-Dec-85 *)
  2.  
  3.   FROM SYSTEM IMPORT ADDRESS;  
  4.   FROM GEMX   IMPORT BasePage;
  5.   
  6.  
  7.   CONST
  8.     MaxPrograms = 6;
  9.  
  10.  
  11.   TYPE
  12.     Status = (normal, moduleNotFound, fileNotFound, illegalKey, readError, 
  13.               badSyntax, noMemory, alreadyLoaded, killed, tooManyPrograms,
  14.               continue, noApplication);
  15.          
  16.     ModuleName    = ARRAY[0..21] OF CHAR;        (* 16 Byte for name *)
  17.                                                  (* 3 Words for key  *)
  18.     ProcEntryPtr  = POINTER TO ProcEntryDesc;
  19.  
  20.     ProcEntryDesc = RECORD
  21.                       flags:      INTEGER;
  22.                       procModRef: ARRAY[0..255] OF LONGINT
  23.                     END;
  24.  
  25.     ModulePtr    = POINTER TO ModuleDesc;
  26.  
  27.     ModuleDesc   = RECORD
  28.                      link:        ModulePtr;
  29.                      modPtr:      ADDRESS;
  30.                      modSize:     LONGINT;
  31.                      dataPtr:     ProcEntryPtr;
  32.                      valA4:       LONGINT;
  33.                      mName:       ModuleName;
  34.                      numOfMods,
  35.                      numOfProcs,
  36.                      codeLen,
  37.                      level:       INTEGER;
  38.                      leaveLoaded: BOOLEAN
  39.                    END;
  40.   
  41.     ErrMessProc  = PROCEDURE(Status); 
  42.     
  43.     BeginHaltProc = PROC; (*DS*)
  44.     EndHaltProc =    PROCEDURE(BOOLEAN); (*TRUE:PRG Weiter, FALSE:PRG Abbruch *)     
  45.  
  46.   VAR
  47.     DisplayLoaderStatus:  ErrMessProc; (* link your own message handler *)
  48.     BasePagePtr:          POINTER TO BasePage;
  49.     SystemDrive:          CHAR;
  50.     SystemPath:           ARRAY [0..63] OF CHAR;
  51.     curLevel:             INTEGER;   (*DS*)
  52.     debugResident:        BOOLEAN;   (*DS*)
  53.     BeginHalt: BeginHaltProc;        (* wird am Anfang bzw. am Ende des *)     
  54.     EndHalt: EndHaltProc;            (* HaltHandlers aufgerufen *)
  55.  
  56.   (* fuer die Beschreibung der folgenden Funktionen siehe MacMETH User Manual *)
  57.  
  58.   PROCEDURE Allocate (VAR ptr: ADDRESS; size : LONGINT);
  59.   PROCEDURE Deallocate (VAR ptr : ADDRESS);
  60.  
  61.   PROCEDURE Call (module, cmdline: ARRAY OF CHAR; leaveLoaded: BOOLEAN; 
  62.                   VAR status: Status);
  63.   PROCEDURE Terminate (status: Status);
  64.   PROCEDURE DisplayStatus (status: Status);
  65.  
  66.   PROCEDURE GetProcessStatus (VAR err: ARRAY OF CHAR);
  67.   PROCEDURE GetNextModule (VAR modNo: INTEGER; VAR dataBase: LONGINT; 
  68.                            VAR modName: ARRAY OF CHAR);
  69.   PROCEDURE GetNextProcedure (VAR modNo: INTEGER; VAR dataBase: LONGINT; 
  70.                               VAR relPC: INTEGER);
  71.  
  72.   PROCEDURE InitProcedure (init: PROC; VAR done: BOOLEAN);
  73.   PROCEDURE TermProcedure (term: PROC; VAR done: BOOLEAN);
  74.   
  75.   PROCEDURE FindModule (dataBase, pc: LONGINT; VAR modPtr: ModulePtr;
  76.                         VAR relPC, modNo: INTEGER; VAR found: BOOLEAN);
  77.  
  78.   PROCEDURE SetError (errMP, errPC, errA4: LONGINT; errNum: INTEGER); 
  79.  
  80.  
  81. (* Implementierung einer Suchstrategie für die Bibliotheksmoduln.
  82.    Sucht benötigte Files, die nicht im aktuellen Directory
  83.    stehen, in den Directories, die im File mit dem Namen FName 
  84.    (aktuelles Dir) eingetragen sind.
  85.  
  86.    Achtung: Der eingetragene Pfadname muss so sein, dass der 
  87.             Filename gerade noch angehängt zu werden braucht !
  88.             Das betrifft insbesondere die Delimiter!! *)
  89.  
  90. CONST
  91.   maxNameLen  = 39;
  92.   tablesize   = 20;
  93.  
  94. TYPE
  95.   nametype = ARRAY [0..maxNameLen] OF CHAR;
  96.   Path     = POINTER TO nametype;
  97.  
  98. VAR
  99.   Table:   ARRAY [1..tablesize] OF Path;
  100.   paths:   ARRAY [1..tablesize] OF nametype;
  101.  
  102. PROCEDURE FindPath (VAR p: Path; VAR FileName: ARRAY OF CHAR; VAR i: INTEGER);
  103.  
  104. PROCEDURE AddPath (p: Path; VAR relFileName: ARRAY OF CHAR; 
  105.                    VAR absFileName: ARRAY OF CHAR);
  106.  
  107. END M2Loader.
  108.  
  109.